﻿//***********************************************************************************
// 文件名称：DataBase
// 功能描述：数据库类
// 数据表：
// 作者：liuxiaohu
// 日期：2017/3/13 9:13:20
// 修改记录：
//***********************************************************************************

using System;
using System.Data;

namespace GameServer
{
    using MySql.Data.MySqlClient;

    /// <summary>
    /// 数据库类
    /// </summary>
    public class DataBase
    {
        #region 字段
        /// <summary>
        /// 连接字符串
        /// </summary>
        private static string mysqlStr = Global.MySqlConString;

        /// <summary>
        /// 连接对象
        /// </summary>
        private MySqlConnection con;

        /// <summary>
        /// 命令对象
        /// </summary>
        private MySqlCommand cmd;

        #endregion

        #region 方法

        /// <summary>
        /// 执行一个sql语句，无返回
        /// </summary>
        /// <param name="sql">需要执行的sql语句</param>
        public void ExecuteNotQuery(string sql)
        {
            using (con = new MySqlConnection(mysqlStr))
            {
                try
                {
                    con.Open();
                    cmd = new MySqlCommand(sql, con);
                    cmd.ExecuteNonQuery();
                }
                catch (Exception e)
                {
                    String errorMessage = String.Format("执行sql命令[{0}]出错,error={1}", sql, e.Message);

                    Console.WriteLine(errorMessage);

                    throw new Exception(errorMessage);
                }
            }

        }

        /// <summary>
        /// 执行一个sql语句，返回查询到的数据
        /// </summary>
        /// <param name="sql">需要执行的sql语句</param>
        /// <returns>返回查询的结果</returns>
        public MySqlDataReader ExecuteQuery(string sql)
        {
            try
            {
                con = new MySqlConnection(mysqlStr);
                if (con == null)
                    return null;
                con.Open();
                cmd = new MySqlCommand(sql, con);
                MySqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
                return reader;
            }
            catch (Exception e)
            {
                Console.WriteLine("执行命令[{0}]出错,error={1}", sql, e.Message);
                return null;
            }
        }

        #endregion
    }
}
